package com.example.ibsp_demo.mapper.message;

import com.example.ibsp_demo.pojo.entity.message.Message;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;

@Mapper
public interface MessageMapper {

    // 根据主键查询
    Message selectByMsgId(Integer msgId);

    // 查询用户收到的未读消息数量
    Integer countUnreadByReceiverId(Integer receiverId);

    // 查询用户收到的消息列表（分页）
    List<Message> selectByReceiverId(Map<String, Object> params);

    // 查询用户发送的消息列表（分页）
    List<Message> selectBySenderId(Map<String, Object> params);

    // 插入消息
    int insert(Message message);

    // 批量标记消息为已读
    int markAsRead(List<Integer> msgIds);

    // 根据接收者ID标记所有消息为已读
    int markAllReadByReceiverId(Integer receiverId);

    // 根据主键删除（谨慎使用）
    int deleteByMsgId(Integer msgId);

    // 根据关联内容ID删除消息（如删除评论时）
    int deleteByRelatedId(Integer relatedId);
}
